#ifndef _NP_PROBLEMS_ALGORITHMS_HOLDER_HEADER_
#define _NP_PROBLEMS_ALGORITHMS_HOLDER_HEADER_

#include "FunctionHolder.h"

namespace Library
{
    class AlgorithmsHolder
    {
    public:
        AlgorithmsHolder(const double step, double accuracy);
        void SimpleHillClimbing(FunctionHolder& func);
		void MultistartHillClimbing(FunctionHolder& func, int numberOfMultistarts);

    protected:
        bool HillClimbingImprovePoint(FunctionHolder& func, std::vector<std::pair<double, double> >& pointsToImprove, const size_t pointNumber, double step);

    protected:
        double step_;
        double accuracy_;
    };
}

#endif//_NP_PROBLEMS_ALGORITHMS_HOLDER_HEADER_